
# scripts/setup.py - 安装脚本
#!/usr/bin/env python3
"""
Streamlit应用程序安装脚本
"""

import os
import sys
import subprocess
import yaml
from pathlib import Path

def create_directories():
    """创建必要的目录结构"""
    directories = [
        'config/user_preferences',
        'logs',
        'data',
        'pages',
        'utils',
        'static/images',
        'static/css',
        'static/js'
    ]
    
    for directory in directories:
        Path(directory).mkdir(parents=True, exist_ok=True)
        print(f"✅ 创建目录: {directory}")

def install_requirements():
    """安装Python依赖"""
    try:
        subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", "requirements.txt"])
        print("✅ Python依赖安装完成")
    except subprocess.CalledProcessError:
        print("❌ Python依赖安装失败")
        sys.exit(1)

def create_default_config():
    """创建默认配置文件"""
    config_file = Path('config/config.yaml')
    
    if not config_file.exists():
        default_config = {
            'credentials': {
                'usernames': {
                    'admin': {
                        'email': 'admin@example.com',
                        'name': '管理员',
                        'password': '$2b$12$UQKlGBxJWPV.2.XC.4RCsO8h4ZO5.9x.PZHb8lFzZV5xzWs5OQO9C'
                    }
                }
            },
            'cookie': {
                'expiry_days': 30,
                'key': 'please_change_this_key_in_production',
                'name': 'streamlit_auth_cookie'
            },
            'preauthorized': {
                'emails': ['admin@example.com']
            }
        }
        
        with open(config_file, 'w', encoding='utf-8') as f:
            yaml.dump(default_config, f, default_flow_style=False, allow_unicode=True)
        
        print("✅ 默认配置文件已创建")
    else:
        print("ℹ️ 配置文件已存在，跳过创建")

def create_env_file():
    """创建环境变量文件"""
    env_file = Path('.env')
    
    if not env_file.exists():
        env_content = """
        # Streamlit配置
STREAMLIT_SERVER_PORT=8501
STREAMLIT_SERVER_ADDRESS=0.0.0.0
STREAMLIT_SERVER_HEADLESS=true
STREAMLIT_BROWSER_GATHER_USAGE_STATS=false

# 应用配置
APP_NAME=我的Streamlit应用
APP_VERSION=1.0.0
DEBUG_MODE=false

# 数据库配置（如果使用）
DATABASE_URL=postgresql://user:password@localhost:5432/streamlit_app

# Redis配置（如果使用）
REDIS_URL=redis://localhost:6379/0
"""
        
        with open(env_file, 'w', encoding='utf-8') as f:
            f.write(env_content.strip())
        
        print("✅ 环境变量文件已创建")
    else:
        print("ℹ️ 环境变量文件已存在，跳过创建")

def main():
    """主安装函数"""
    print("🚀 开始安装Streamlit应用程序...")
    
    create_directories()
    install_requirements()
    create_default_config()
    create_env_file()
    
    print("\n✨ 安装完成!")
    print("\n📋 后续步骤:")
    print("1. 修改 config/config.yaml 中的认证配置")
    print("2. 运行 'streamlit run main.py' 启动应用")
    print("3. 访问 http://localhost:8501")
    print("4. 默认管理员账户: admin / admin123")
    
    print("\n🔧 可选配置:")
    print("- 修改 .env 文件中的环境变量")
    print("- 使用 Docker: docker-compose up -d")
    print("- 查看日志: tail -f logs/user_activity.json")

if __name__ == "__main__":
    main()